120 FOR A=0 TO 15:READ PL(0,A),PL(1,A),PL(2,A):NEXT:FOR G=0 TO 1:SCREEN 1,G,3:FOR A=0 TO 15:PALETTE A,[PL(0,A),PL(1,A),PL(2,A)]:NEXT:NEXT
130 CLS:GOSUB *W1:GOTO *MAIN
140 DATA 0,0,0,0,0,128,0,128,0,0,128,128,128,0,0,128,0,128,128,128,0,128,128,128,64,64,64,0,0,255,0,255,0,0,255,255,255,0,0,255,0,255,255,255,0,255,255,255
240 LINE(CX,CY+16)-(CX+215,CY+16),PSET,%8:SYMBOL(CX+20,CY),"LUPE",1,1,%8:SYMBOL(CX+5,CY+232),"163248複塗潰",1,1,%8:FOR A=0 TO 2:LINE(CX+5+A*32,CY+232)-(CX+37+A*32,CY+248),PSET,%8,B:NEXT
280 SYMBOL(CX+20,CY+1),"カラー",1,1,%8:FOR G1=0 TO 1:FOR G=0 TO 7:LINE(CX+4+G*12,CY+32+G1*12)-(CX+16+G*12,CY+44+G1*12),PSET,%8,BF,%(G+G1*8):NEXT:NEXT
290 FOR G=0 TO 1:LINE(CX+6+G*48,CY+18)-(CX+41+G*48,CY+30),PSET,%7,BF,%CO(G):NEXT
300 FOR G=0 TO 2:LINE(CX+5,CY+58+G*10)-(CX+93,CY+66+G*10),PSET,3-G-(G=0),BF:LINE(CX+6+PL(G,CO(0))/3,CY+59+G*10)-(CX+8+PL(G,CO(0))/3,CY+65+G*10),PSET,%8,B:NEXT
680 IF NOT(WX(WC)<CX AND WY(WC)<CY AND WX(WC)+W2X(WC)>CX AND WY(WC)+16>CY) THEN 790
690 ' ウィンドウ移動
700 IF WX(0)+16>CX AND WY(0)+16>CY THEN FOR G=1 TO 9:WC(G-1)=WC(G):WX(G-1)=WX(G):WY(G-1)=WY(G):W2X(G-1)=W2X(G):W2Y(G-1)=W2Y(G):NEXT:WC(9)=0:GOSUB *表示:GOTO *MAIN
710 MC=0:SCREEN 1,1:CCY=CY-WY(0):CCX=CX-WX(0)
720 CX=MOUSE(0)-CCX:CY=MOUSE(1)-CCY:IF MOUSE(2,0)=-1 THEN MC=0 ELSE MC=MC+1
730 IF CY<20 THEN CY=20
740 IF MC=3 THEN WX(0)=CX:WY(0)=CY ELSE LINE(CX,CY)-(CX+W2X(0),CY+W2Y(0)),XOR,7,B:WAIT 2:LINE(CX,CY)-(CX+W2X(0),CY+W2Y(0)),XOR,7,B:GOTO 720
750 WX(0)=CX:WY(0)=CY:IF WX(0)+W2X(0)>639 THEN WX(0)=639-W2X(0)
760 IF WY(0)+W2Y(0)>479 THEN WY(0)=479-W2Y(0)
770 GOSUB *表示:GOTO *MAIN
780 ' ウィンドウの命令
790 CCX=CX-WX(WC):CCY=CY-WY(WC):IF WC1=1 THEN GOSUB *表示
800 ON WC(WC) GOTO *ルーペ,1150,1230,2210,1790
810 GOTO *MAIN
820 *ルーペ
830 IF CCX>12 AND CCX<201 AND CCY>28 AND CCY<219 THEN CX=INT((CCX-12)/12*LP):CY=INT((CCY-28)/12*LP) ELSE 850
850 IF CCX>4 AND CCY>232 AND CCX<99 THEN LP=INT((CCX-4)/32)+1:GOSUB *表示::GOTO *MAIN
860 IF CCX<12 AND CCY>108 AND CCY<140 THEN C1X=C1X-LP*4:C1X=-C1X*(C1X>0):GOSUB *G2
870 IF CCX>204 AND CCY>108 AND CCY<140 THEN C1X=C1X+LP*4:C1X=-C1X*(C1X<(640-LP*16))-(C1X>639)*600:GOSUB *G2
880 IF CCX>80 AND CCY>16 AND CCX<120 AND CCY<27 THEN C1Y=C1Y-LP*4:C1Y=-C1Y*(C1Y>0):GOSUB *G2
890 IF CCX>80 AND CCY>220 AND CCX<120 AND CCY<231 THEN C1Y=C1Y+LP*4:C1Y=-C1Y*(C1Y<(480-LP*16))-(C1X>479)*400:GOSUB *G2
900 IF CCY>232 AND CCX>99 THEN CC=INT((CCX-100)/16):SCREEN 1,1:MOUSE 4,WX(WC)+12,WY(WC)+28,WX(WC)+203,WY(WC)+219:C2=12/LP:WINDOW(WX(WC)+12,WY(WC)+28)-(WX(WC)+203,WY(WC)+219):VIEW(WX(WC)+12,WY(WC)+28)-(WX(WC)+203,WY(WC)+219):WAIT 20 ELSE 920
1150 IF CCX>4 AND CCY>32 AND CCX<99 AND CCY<55 THEN CO(C1)=INT((CCX-4)/12)+INT((CCY-32)/12)*8 ELSE 1180
1160 IF C1=0 THEN FOR G=0 TO 2:LINE(WX(WC)+5,WY(WC)+58+G*10)-(WX(WC)+93,WY(WC)+66+G*10),PSET,3-G-(G=0),BF:LINE(WX(WC)+6+PL(G,CO(0))/3,WY(WC)+59+G*10)-(WX(WC)+8+PL(G,CO(0))/3,WY(WC)+65+G*10),PSET,%7,B:NEXT
1410 FOR G2=CX TO CX+PIC(0) STEP 2:GET@A(G2,CY)-(G2,CY+PIC(1)),PIC:GET@A(G2+1,CY)-(G2+1,CY+PIC(1)),PIC,500:PUT@A(G2+1,CY)-(G2+1,CY+PIC(1)),PIC:PUT@A(G2,CY)-(G2,CY+PIC(1)),PIC,,,,,500:NEXT:GOTO 1530
2390 CX=INT(MOUSE(0)/LPX)*LPX:CY=INT(MOUSE(1)/LPX)*LPX:LINE(CX,CY)-(CX+LPX,CY+LPX),XOR,7,B:LINE(CX,CY)-(CX+LPX,CY+LPX),XOR,7,B:IF MOUSE(2,1)=-1 THEN 2250
2400 IF MOUSE(2,0)=0 THEN 2390
2410 CCX=CX:CCY=CY:WAIT 20
2420 CX=INT((MOUSE(0)+1)/LPX)*LPX-1:CY=INT((MOUSE(1)+1)/LPX)*LPX-1:LINE(CCX,CCY)-(CX,CY),XOR,7,B:WAIT 1:LINE(CCX,CCY)-(CX,CY),XOR,7,B:IF MOUSE(2,1)=-1 THEN 2250
2430 IF MOUSE(2,0)=0 THEN 2420
2440 SCREEN 1,0:C1X=CCX:C1Y=CCY:CCX=CX-CCX:CCY=CY-CCY:GET@A(C1X,C1Y)-(C1X+CCX,C1Y+CCY),PIC:CC!=INT((INT((CCX+8)/8)*(CCY+1)*4+1)/2):IF CC!>38400 THEN 2380
2470 CX=INT(MOUSE(0)/LPX)*LPX:CY=INT(MOUSE(1)/LPX)*LPX:LINE(CX,CY)-(CX+CCX,CY+CCY),XOR,7,B:WAIT 1:LINE(CX,CY)-(CX+CCX,CY+CCY),XOR,7,B:IF MOUSE(2,1)=-1 THEN IF C>2 THEN 2500 ELSE 2250
2480 IF MOUSE(2,0)=0 THEN 2470
2490 CLS:SCREEN 1,0:GET@A(CX,CY)-(CX+CCX,CY+CCY),PIC,CC!*(C-1):SCREEN 1,1:IF CC!*(C+1)<76800 THEN C=C+1:GOTO 2460